package com.sgq.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sgq.entity.Permission;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sgq.vo.PermissionQueryVo;
import com.sgq.vo.RolePermissionVo;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author sgq
 * @since 2024-09-13
 */
public interface PermissionService extends IService<Permission> {

    IPage<Permission> findPage(PermissionQueryVo permissionQueryVo);

    /**
     * 根据用户名查询用户
     */
    List<Permission> findPermissionListByUserId(Long id);


    /**
     * 查询菜单列表
     * @param permissionQueryVo
     * @return
     */
    List<Permission> findPermissionList(PermissionQueryVo permissionQueryVo);
    /**
     * 查询所有权限构成的权限树
     * @return
     */
    List<Permission> findParentPermissionList();
    /**
     * 检查菜单是否有子菜单
     * @param id
     * @return
     */
    boolean hasChildrenInPermission(Long id);

    /**
     * 检查菜单是否分配了角色
     * @param id
     * @return
     */
    boolean checkPermissionUsed(Long id);

    /**
     * 检查是否存在相同code的权限
     * @param permission  权限
     * @param
     */
    boolean checkPermissionCode(Permission permission);

    RolePermissionVo findPermissionTree(Long userId, Long roleId);
}
